package com.binhthuan.catechist.server.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import com.google.gson.annotations.Expose;

/**
 * @author <b>Giang Đinh</b> - Bài kiểm tra của học viên, tương ứng với bảng
 *         <b>ec_test</b> trong cơ sở dữ liệu.
 */
@Entity
@Table(name = "ec_test")
public class Test extends AbstractObject {

    /**
     * Mã bài kiểm tra.
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    @Expose
    private Integer id;
    
    /**
     * Học viên.
     */
    @ManyToOne
    @JoinColumn(name = "trainee_id")
    @Expose
    private Trainee trainee;
    
    /**
     * Điểm số.
     */
    @Column(name = "mark")
    @Expose
    private Float mark;
    
    /**
     * Bảng điểm.
     */
    @ManyToOne
    @JoinColumn(name = "course_transcript_id")
    @Expose
    private CourseTranscript courseTranscript;
    
    public Test() {
        
    }

    /**
     * Lấy mã điểm cá nhân.
     * @return Mã điểm cá nhân.
     */
    public Integer getId() {
        return id;
    }

    /**
     * Gán mã điểm cá nhân.
     * @param id
     *            Mã điểm cá nhân.
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * Lấy học viên.
     * @return Học viên.
     */
    public Trainee getTrainee() {
        return trainee;
    }

    /**
     * Gán học viên.
     * @param trainee
     *            Học viên.
     */
    public void setTrainee(Trainee trainee) {
        this.trainee = trainee;
    }

    /**
     * Lấy điểm số.
     * @return Điểm số.
     */
    public Float getMark() {
        return mark;
    }

    /**
     * Gán điểm số.
     * @param value
     *            Điểm số.
     */
    public void setMark(Float value) {
        this.mark = value;
    }

    /**
     * Lấy bảng điểm lớp.
     * @return Bảng điểm lớp.
     */
    public CourseTranscript getCourseTranscript() {
        return courseTranscript;
    }

    /**
     * Gán bảng điểm lớp.
     * @param courseTranscript
     *            Bảng điểm lớp.
     */
    public void setCourseTranscript(CourseTranscript courseTranscript) {
        this.courseTranscript = courseTranscript;
    }
}
